iT邦幫忙

2025 iThome 鐵人賽

DAY 30
0

從第一天的 帳號密碼登入 開始,到最後建立 進階授權策略,這 30 天是一場漫長卻紮實的馬拉松。

我們不僅僅是「會寫 Spring Security 設定檔」,更重要的是:你已經建立了一套完整的 認證與授權安全思維。三十天不長,但跟大家一起走過這三十天,感覺是一個不一樣的體驗。

我總結了這30天我們學會的七個核心觀念:

1. Authentication vs Authorization

  • Authentication(認證):確認使用者是誰(你是否真的持有這張門禁卡?)。

  • Authorization(授權):決定使用者能做什麼(你能不能進主管辦公室?)。

    👉 兩者常被混淆,但其實是安全架構的兩個不同層次。

2. Session

  • 運作原理
    • 使用者登入後,伺服器建立 Session 並保存使用者資訊。
    • 瀏覽器存放 Session ID(通常在 Cookie 裡)。
    • 每次請求帶上 Session ID → 伺服器查表確認身分。
  • 優點
    • 簡單、直觀,適合小型系統。
  • 缺點
    • 需要伺服器保存狀態,分散式架構難以擴展。
    • Session 共享(sticky session、session replication)會增加複雜度。

3. Token

  • 運作原理
    • 使用者登入後,伺服器簽發 Token(例如 JWT)。
    • Token 包含使用者資訊與過期時間,不需要伺服器保存狀態。
    • 每次請求帶上 Token,由伺服器驗證簽章即可。
  • 優點
    • 無狀態,適合分散式與微服務架構。
    • 可以攜帶額外資訊(角色、scope、屬性)。
  • 缺點
    • Token 過期前無法「主動失效」。
    • 一旦洩漏,可能造成安全風險(需搭配短效存活時間 + Refresh Token)。

4. OAuth2 / OIDC / SAML(外部身份協定)

  • OAuth2:授權框架,允許使用者授權第三方應用存取資源(例:Google Drive 應用存取檔案)。
  • OIDC(OpenID Connect):在 OAuth2 之上增加「身份層」,解決「你是誰」的問題(常用於 Google、Facebook 登入)。
  • SAML(Security Assertion Markup Language):基於 XML 的身份驗證協定,常見於企業 SSO(單一登入)。

👉 Spring Security 原生支援這些協定,讓系統能無縫整合外部 Provider。

5. RBAC(Role-Based Access Control)

  • 概念:以「角色」來決定使用者能做什麼。
  • 範例
    • ROLE_ADMIN → 能新增/刪除帳號。
    • ROLE_USER → 只能查看自己的資料。
  • 優點:簡單直觀,符合大部分組織結構。

6. ABAC(Attribute-Based Access Control)

  • 概念:依照「屬性」來判斷是否授權。
  • 範例
    • department == HR 才能進入人資系統。
    • ownerId == authentication.name 才能查看自己的檔案。
  • 優點:靈活,能應付動態的業務需求。

7. Scope(操作範圍控制)

  • 概念:限制使用者能做哪些操作,例如 readwrite
  • 範例
    • scope=read → 只能查詢資料。
    • scope=write → 能修改/刪除資料。
  • 優點:能與 RBAC、ABAC 結合,進一步細化 API 層級的控制。

這七個是我自己研究,覺得關於Security重要的七個重要觀念。在開發的時候,我也建議大家遵循著以下的幾點原則:

  • 最小權限原則(Least Privilege):只給使用者必要的權限。
  • 短效 Access Token + Refresh Token:提升安全性。
  • 集中化策略管理:避免授權邏輯分散在程式碼。
  • 日誌與監控:登入與授權過程需完整記錄。
  • Zero Trust 思維:每一次請求都必須驗證,不預設信任。

完成這 30 天,我們已經具備基本設計安全系統的觀念與能力了,恭喜大家!

這 30 天的學習,不只是 API 的程式碼練習,更是一次 安全架構的完整體驗

我們學會了:

  • 認證與授權的觀念為何。
  • Session 的限制與 Token 的優勢。
  • 為何 OAuth2/OIDC/SAML 成為標準協定。
  • 如何用 RBAC/ABAC/Scope 組合成真實業務邏輯。
  • 如何在 Spring Security 中實踐這些概念。

看到這裡,恭喜你,也恭喜我自己完成這場 30 天的學習馬拉松!

安全不是一個單一功能,而是一套完整思維。從今天起,讓我們一起朝著建構 安全、可擴展、符合業界標準的認證與授權系統 的能力前進!


上一篇
Day 29:專案案例 Part 3 — 進階授權策略與最佳實務
系列文
「站住 口令 誰」關於資安權限與授權的觀念教學,以Spring boot Security框架實作30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言